package com.zpark.respository;

import com.zpark.pojo.Comment;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;

import javax.transaction.Transactional;
import java.util.List;

/**
 * 在这个接口中使用JPA的技术完成数据库的增删改查操作
 */
public interface CommentRespository extends JpaRepository<Comment, Integer> {

    //@Query表示增删改查操作的注解，nativeQuery表示参数开启原生SQL语句语法规则
    //Pageable表示一个分页的对象，指定起始的数据和最终结果
    @Query(value = "select * from t_comment where article_id = ?", nativeQuery = true)
    List<Comment> getCommentPage(Integer article_id, Pageable pageable);//第一页的数据，每页数据显示三条

    @Transactional//开启事物
    @Modifying//删除和修改操作必须添加此注解
    @Query("update t_comment c set c.author=?1 where c.id=?2")
    int updateComment(String author, Integer id);

    @Transactional//开启事物
    @Modifying
    @Query("delete t_comment c where c.id = ?1")//兼容性差
    int deleteComment(Integer id);

    //插入操作模板性极高，所以直接封装了，不用直接定义，可以直接调用

}
